package com.example.demo001.utils;

public class PasswordValidatorUtil{
    private PasswordValidatorUtil(){
    }

    /**
     * 校验密码是否符合指定规则
     *
     * @param password 待校验的密码
     * @return 如果密码格式合法，返回 true；否则返回 false
     */
    public static boolean isValidPassword(String password) {
        if (password == null || password.length() < 8) {
            return false; // 密码为空或长度不足
        }

        // 初始设定：没有找到小写字母、大写字母、数字
        boolean hasLower = false;
        boolean hasUpper = false;
        boolean hasDigit = false;

        // 检查每个字符
        for (char c : password.toCharArray()) {
            if (Character.isLowerCase(c)) hasLower = true;
            else if (Character.isUpperCase(c)) hasUpper = true;
            else if (Character.isDigit(c)) hasDigit = true;
        }

        // 计算满足条件的字符类型数量
        int typeCount = 0;
        if (hasLower) typeCount++;
        if (hasUpper) typeCount++;
        if (hasDigit) typeCount++;

        // 确保至少包含两种类型的字符，并且以字母开头
        return typeCount >= 2 && Character.isLetter(password.charAt(0));
    }

}
